package model;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Serializable;

public class MensagemDeArquivo implements Serializable, RecebivelPorConversa{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 8034911912277537730L;
	private String ipDestino;
	private String ipRemetente;
	private String caminhoArquivo;
	private byte[] buf; 
	
	public MensagemDeArquivo(String caminhoArquivo) {

		this.caminhoArquivo = caminhoArquivo;
		
		try {
			criaObjetoDeSaida();
		} catch (IOException e) {
			System.out.println("Erro ao criar objeto do arquivo, referente ao caminho: " + caminhoArquivo);
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	private void criaObjetoDeSaida() throws IOException, ClassNotFoundException{
		FileInputStream arquivoEntrada = new FileInputStream(caminhoArquivo);
		BufferedInputStream fluxoEntrada = new BufferedInputStream(arquivoEntrada);
		System.out.println("Arquivo lido, e buffer de entrada criado: " + caminhoArquivo);
		
		int tamanho = 1024; // buffer de 1KB pode ser aumentado depois.  
		byte[] buffer = new byte[tamanho];  
		int lidos = -1;
		
		ByteArrayOutputStream fluxoSaida = new ByteArrayOutputStream(0);
		while ((lidos = fluxoEntrada.read(buffer, 0, tamanho)) != -1) {
			fluxoSaida.write(buffer, 0, lidos);
		}
		
		buf = fluxoSaida.toByteArray();
	
		System.out.println("Fluxo de saida criado.");
		
		fluxoEntrada.close();
		arquivoEntrada.close();
	}
		
	
	public String getNomeArquivo(){
		String[] quebra;
		quebra = caminhoArquivo.split("/");
		return quebra[quebra.length - 1];
	}


	@Override
	public String getIpDestino() {
		// TODO Auto-generated method stub
		return ipDestino;
	}

	@Override
	public String getIpRemetente() {
		// TODO Auto-generated method stub
		return ipRemetente;
	}

	@Override
	public void setIpDestino(String ipDestino) {
		// TODO Auto-generated method stub
		this.ipDestino = ipDestino;
	}

	@Override
	public void setIpRemetente(String ipRemetente) {
		// TODO Auto-generated method stub
		this.ipRemetente = ipRemetente;
	}

	public byte[] getBuf() {
		return buf;
	}
	
	
	

}
